const { exec } = require("child_process");
const path = require("path");
const fs = require("fs");

// 从命令行参数获取环境标识，默认为 'dev'
const env = process.argv[2] || "dev";
console.log("---当前环境：", env);
// 根据环境动态设置项目路径
const PROJECT_PATH = path.resolve(__dirname, `../dist/${env}/mp-weixin`);
// 常见的微信开发者工具 CLI 路径
const CLI_PATHS = [
    "E:\\软件\\微信web开发者工具\\cli.bat", //修改这里目录
    "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
    "C:\\Program Files\\Tencent\\微信web开发者工具\\cli.bat",
    "D:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
    "D:\\Program Files\\Tencent\\微信web开发者工具\\cli.bat",
    "E:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
    "E:\\Program Files\\Tencent\\微信web开发者工具\\cli.bat",
    "E:\\ruanjian\\微信web开发者工具\\cli.bat"
];

console.log("open-weixin-devtools.js 执行");
console.log("项目路径:", PROJECT_PATH);

// 检查项目目录是否存在
function checkProjectPath() {
    if (!fs.existsSync(PROJECT_PATH)) {
        console.log("⚠ 项目编译目录不存在，等待编译完成...");
        return false;
    }
    console.log("✓ 项目目录存在");
    return true;
}

// 查找 CLI 路径
function findCLIPath() {
    console.log("\n正在查找微信开发者工具 CLI...");

    for (const cliPath of CLI_PATHS) {
        if (fs.existsSync(cliPath)) {
            console.log("✓ 找到 CLI:", cliPath);
            return cliPath;
        }
    }

    console.log("✗ 未找到 CLI，尝试的路径:");
    CLI_PATHS.forEach(p => console.log("  -", p));
    return null;
}

// 使用 CLI 打开项目
function openWithCLI(cliPath) {
    return new Promise((resolve, reject) => {
        const command = `"${cliPath}" open --project "${PROJECT_PATH}"`;

        console.log("\n========================================");
        console.log("正在打开微信开发者工具...");
        console.log("========================================");
        console.log("执行命令:", command);
        console.log("");

        exec(command, { timeout: 15000 }, (error, stdout, stderr) => {
            if (error) {
                // 有些情况下即使成功也会返回 error，检查输出内容
                if (stdout && (stdout.includes("idePortFile") || stdout.includes("success"))) {
                    console.log("✓ 微信开发者工具已打开");
                    resolve(true);
                    return;
                }

                console.error("✗ 执行失败:", error.message);
                if (stdout) console.log("标准输出:", stdout);
                if (stderr) console.log("错误输出:", stderr);
                reject(error);
                return;
            }

            if (stdout) {
                console.log("输出:", stdout);
            }

            if (stderr) {
                console.log("错误输出:", stderr);
            }

            console.log("✓ 微信开发者工具已打开");
            resolve(true);
        });
    });
}

// 主函数
async function openDevTools() {
    if (!checkProjectPath()) {
        console.log("等待 3 秒后重试...");
        setTimeout(openDevTools, 3000);
        return;
    }

    // 查找并使用 CLI
    const cliPath = findCLIPath();

    if (!cliPath) {
        console.log("\n========================================");
        console.log("未找到微信开发者工具 CLI");
        console.log("========================================");
        console.log("\n请检查 CLI 文件是否存在:");
        console.log("E:\\软件\\微信web开发者工具\\cli.bat");
        console.log("\n如果不存在，请手动操作:");
        console.log("1. 打开微信开发者工具");
        console.log('2. 点击"导入项目"');
        console.log("3. 选择目录:", PROJECT_PATH);
        console.log("");
        return;
    }

    try {
        await openWithCLI(cliPath);
        console.log("\n✓ 操作完成\n");
    } catch (error) {
        console.log("\n========================================");
        console.log("打开失败");
        console.log("========================================");
        console.log("\n请手动打开微信开发者工具并导入项目:");
        console.log(PROJECT_PATH);
        console.log("");
    }
}

// 延迟执行，等待编译完成
setTimeout(openDevTools, 5000);
